home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / fixes.arc / BZERO.S < prev    next >
Text File  |  1985-11-20  |  634b  |  30 lines

  1. *    char *bzero(dest, len)
  2. *        register char *dest;
  3. *        register unsigned int len;
  4.  
  5. .text
  6. .globl _bzero
  7. _bzero:
  8.     move.l    4(a7),a0    ; destination
  9.     clr.l    d1
  10.     move.w    8(a7),d1    ; number of bytes
  11.     move.l    a0,d0
  12.     and    #1,d0        ; odd alignment?
  13.     beq    bzero0
  14.     clr.b    (a0)+        ; zero first byte
  15.     subq.l    #1,d1        ; and reduce count
  16. bzero0:
  17.     move.l    d1,d2        ; save full count value
  18.     lsr.l    #1,d1        ; convert to word count
  19.     bra    bzero2
  20. bzero1:
  21.     clr.w    (a0)+        ; word zero loop
  22. bzero2:
  23.     dbra    d1,bzero1
  24.     and    #1,d2        ; extra odd byte to copy?
  25.     beq    bzero3
  26.     clr.b    (a0)+        ; zero last byte
  27. bzero3:
  28.     move.l    4(a7),d0    ; return destination pointer
  29.     rts
  30.